package com.test.MultiThread;

/**
 * 多线程
 */
public class MultiThread {
    public static void main(String[] args) {
//resources 就是竞争资源的对象
        Resouces resouces = new Resouces();
        Runnable1 runnable1 = new Runnable1(resouces);
        runnable1.run();
        for (int i = 0; i < 100; i++) {
//            这里创建多线程去执行任务
//            多线程之间是竞争关系，多个线程竞争同一个资源，也就是用一个对象
//            所以将竞争对象放进Thread中
            new Thread(runnable1, "Thread" + i).start();
        }
    }
    static class Resouces {
        private int count = 100;
        //        多线程竞争执行该方法 所以该方法需要加锁
        public synchronized void methodA() {
            if (count > 0) {
                count--;
            }
            System.out.println(Thread.currentThread().getName() + "" + "count:" + count);
        }
    }



    static class Runnable1 implements Runnable {
        Resouces resource = null;
        //        构造方法
        Runnable1(Resouces resouces) {
            this.resource = resouces;
        }
        @Override
        public void run() {
            resource.methodA();
        }
    }




}
